#include <unistd.h>
#include <stdio.h> 
#include <string.h> 
#include "../stack_trace/stack_trace.h"
#include "../ipc/Pipe.h"



float sinus(float x){
    getCaller_fd(Pipe::getPipeIn());
    return x;
}


class Math{
public:
    static void init(){
       getCaller_fd(Pipe::getPipeIn());
    }
};



int main(){
  Pipe::initPipe();

  if( !fork() ){
      for(int i=0;i<100000000;i++){
      	Math::init();
      	float x= sinus(x);
      }
    printf("J'ai fini \n");
    return 0;
  }

  close(Pipe::getPipeIn());	
  FILE *f = fdopen( Pipe::getPipeOut(), "r" );
  char buff[4096];
  int compteur=1;
  symbole_t st;
  char c;
  scanf("%c",&c);
  while( fgets(buff,4096,f) ){
    printf("valeur du compteur %d\n",compteur);
    
    if(compteur%3 == 0){
    printf("Buffer length = %d && %s\n",strlen(buff)+1,buff);
    memcpy(st.symb,buff,strlen(buff));
    
    //demangle(&st);
    //printf("from child: func:%s exec:%s \n", st.function,st.exec );
    //copier cette donnée dans le processus instrumenteur
    }
   compteur++;
  }
  puts("");
}

